"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/3/21 14:16
@Description : 
每次执行sql完毕后 都需要将连接 游标资源释放  频繁创建连接和释放连接的过程  消耗数据库的性能
引入数据库连接池
"""
import pymysql
# 导入连接池模块
from dbutils.pooled_db import PooledDB

# 创建连接池对象  数据库索要连接
db_pool = PooledDB(
    host='localhost',
    port=3306,
    user='root',
    password='root',
    db='python2511',
    charset='utf8',
    creator=pymysql, # 使用哪个模块操作数据库
    maxconnections=5,  # 通常允许的最大连接数（默认值 0 或 None 表示任意数量的连接）
    mincached=2,  # 池中空闲连接的初始数量（默认值 0 表示启动时不建立任何连接）
    maxcached=3,  # 池中的最大空闲连接数（默认值 0 或 None 表示池大小不受限制）
    blocking=True  # 确定超过最大值时的行为（如果设置为 true，则阻止并等待，直到连接数减少，但默认情况下会报错）
)
print(db_pool)
# 从连接池中获取连接
pool_conn = db_pool.connection()

cur = pool_conn.cursor()
lines = cur.execute('select * from user')
rows_data = cur.fetchall()
for row in rows_data:
    print(row)

cur.close()
pool_conn.close()